// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_ANDROID_WINDOW_ANDROID_OBSERVER_H_
#define UI_ANDROID_WINDOW_ANDROID_OBSERVER_H_

#include "ui/android/ui_android_export.h"

namespace ui {

class UI_ANDROID_EXPORT WindowAndroidObserver {
public:
    virtual void OnCompositingDidCommit() = 0;
    virtual void OnRootWindowVisibilityChanged(bool visible) = 0;
    virtual void OnAttachCompositor() = 0;
    virtual void OnDetachCompositor() = 0;
    virtual void OnVSync(base::TimeTicks frame_time,
        base::TimeDelta vsync_period)
        = 0;
    virtual void OnAnimate(base::TimeTicks frame_begin_time) { }

    // Note that activity state callbacks will only be made if the WindowAndroid
    // has been explicitly subscribed to receive them. The observer instance
    // should account for whether or not this is the case.
    virtual void OnActivityStopped() = 0;
    virtual void OnActivityStarted() = 0;

protected:
    virtual ~WindowAndroidObserver() { }
};

} // namespace ui

#endif // UI_ANDROID_WINDOW_ANDROID_OBSERVER_H_
